package com.fanshuai.jmx;

import com.fanshuai.jmx.agent.HttpAgent;
import com.fanshuai.jmx.agent.JMXAgent;
import com.fanshuai.jmx.agent.JMXAgentNotification;
import com.fanshuai.jmx.agent.RMIAgent;
import com.fanshuai.jmx.jvm.MemoryReporter;
import com.fanshuai.jmx.jvm.RuntimeReporter;
import com.fanshuai.jmx.jvm.ThreadReporter;

/**
 * MBean
 * JMX规范  需满足XXXMBean名称
 * MBean可以获取或设置属性，执行方法
 *
 * MBean为JVM内置的监控管理属性类，通过MBean对象实现JMX监控
 *
 * JMX规范：
 * MBean类存储监控数据，每个MBean对象注册到MBeanServer
 * MBeanServer为JMX容器，存储、管理MBean
 * MBeanServer提供Agent，供外部程序访问。默认Agent通过JMI访问，通过HttpAdaptor，暴露http访问端口
 *
 * 每个MBean都唯一的名称，通过ObjectName标识。通过ObjectName可以获取、设置属性、执行方法等
 * JMX访问Agent为：JConsole、HTTP、程序访问
 */
public class Main {
    public static void main(String[] args) throws Exception {
        //JMXAgent.init();
        //HttpAgent.init();

        //RMIAgent.init();

        //JMXAgentNotification.init();
        report();

        Thread.sleep(3600000);
    }

    private static void report() {
        ThreadReporter.reportThreads();
        MemoryReporter.report();
        RuntimeReporter.init();
    }
}


